import request from '@/config/axios'

// 课程 VO
export interface CourseVO {
  id: number // 主键
  name: string // 课程名称
  semesterId: number // 课程学期ID
  code: string // 课程编码
  teacher: string // 教师
  remark: string // 备注
}

// 管理员课程 VO
export interface CourseAdminRespVO {
  id: number // 主键
  semesterName: string // 课程学期
  name: string // 课程名称
  semesterId: number // 课程学期ID
  code: string // 课程编码
  teacher: string // 教师
  teacherId: number // 教师ID
  remark: string // 备注
  studentAmount: number // 教学班人数
  missTwiceAmount: number // 漏签2次人数
  lateTwiceAmount: number // 迟到2次人数
  earlyTwiceAmount: number // 早退2次人数
  missSign: number[] // 漏签2次学生账号ID
  beLate: number[] // 迟到2次学生账号ID
  leaveEarly: number[] // 早退2次学生账号ID
  needClass: boolean // 是否显示上课按钮
  signLogId: string // 签到记录ID 如果第一次上课 为空
}

// 课程 API
export const CourseApi = {
  // 查询课程分页 返回CourseAdminRespVO了
  getCoursePage: async (params: any) => {
    return await request.get({ url: `/course/course/page`, params })
  },

  // 查询课程详情
  getCourse: async (id: number) => {
    return await request.get({ url: `/course/course/get?id=` + id })
  },

  // 新增课程
  createCourse: async (data: CourseVO) => {
    return await request.post({ url: `/course/course/create`, data })
  },

  // 修改课程
  updateCourse: async (data: CourseVO) => {
    return await request.put({ url: `/course/course/update`, data })
  },

  // 删除课程
  deleteCourse: async (id: number) => {
    return await request.delete({ url: `/course/course/delete?id=` + id })
  },

  // 导出课程 Excel
  exportCourse: async (params) => {
    return await request.download({ url: `/course/course/export-excel`, params })
  },

  // 使用科大导师当做任课教师 传入id+teacherId
  updateCourseUstcMentor: async (data: Partial<CourseVO>) => {
    return await request.put({ url: `/course/course/update-ustc-mentor`, data })
  },

  // 立即同步
  syncNow: async () => {
    return await request.get({ url: `/course/course/sync-now` })
  },

  // 根据账号ID查询学生信息(查看漏签/迟到/早退)
  getAccountInfo: async (data: number[]) => {
    return await request.post({ url: `/course/course/get-account-info`, data })
  }
}
